semaphore mutex = 1;
semaphore emtpy = n;
semaphore full = 0;
producer()
{
    while (true)
    {
        produce an item in nextp; //生产一个产品；
        wait(empty);              //申请一个空缓冲区；
        wait(mutex);              //独占缓冲区使用权限；
        将产品放入缓冲区;         //使用：存放产品
        signal(mutex);            //使用完毕，释放缓冲区权限
        signal(full);             //增加一个满缓冲区
    }
}

consumer()
{
    while (true)
    {
        wait(full);                 //申请一个满缓冲区；
        wait(mutex);                //独占缓冲区使用权限；
        从缓冲区取出产品;           //使用：取产品；
        signal(mutex);              //使用完毕，释放缓冲区使用权限；
        signal(empty);              //增加一个空缓冲区；
        consumer the item in nextp; //消费一个产品；
    }
}